/*****************************************************************//**
 * \file   print.h
 * \brief  打印相关的函数实现
 * 
 * \author admin
 * \date   August 2022
 *********************************************************************/

#ifndef PRINTT_H_
#define PRINTT_H_




/// <summary>
/// 将格式化字符串fmt转换成普通字符串str，以方便打印。
/// 格式化字符格式为：%+数字+格式化字符(c,s,%,d,u,f,x,X)。
/// 数字表示格式化字符的宽度，如果数字前面有负号，表示左对齐，否则默认右对齐。如果是浮点数，5.2表示浮点数长度是5，保留两位小数。
/// 目前支持的格式化字符如下：
///      %c             字符
///      %s             字符串
///      %%             "%"
///      %d             有符号十进制整数。
///      %u             无符号十进制整数。
///      %f             浮点数(一律保留5位小数)
///      %x             十六进制格式显示整数（无符号整数）。
/// 格式化参数如果不匹配，会打印到栈帧的内容，也可能使程序进入死循环。
/// </summary>
/// <param name="str">转换后的字符串(事先要预留充足的内存，以免数组越界)</param>
/// <param name="fmt">待转换的字符</param>
/// <param name="">格式化参数（可变形参）</param>
/// <returns>转换后字符串长度</returns>
int sprintfs(char* str, const char* fmt, ...);

/// <summary>
/// 格式化打印字符串
/// </summary>
/// <param name="fmt">格式化字符串</param>
/// <param name="">可变参数</param>
void printfs(const char* fmt, ...);


// 用户实现这个函数。 这个函数用于格式化打印字符串。
void print_str_(char* str, int len);


void test_print(void);

void test_printfloat(void);


#endif  









//


